In [ ]:
import numpy as np
import pandas as pd
In [ ]:
""" Construtor padrão """
pd.Series(
name="Compras",
index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"],
data=[2, 12, 1, 5, 2]
)
In [ ]:
""" Construtor padrão: dados desconhecidos """
pd.Series(
name="Compras",
index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"]
)
In [ ]:
""" Construtor padrão: valor padrão """
pd.Series(
name="Compras",
index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"],
data="fill here"
)
In [ ]:
""" Recebendo um Dicionário"""
s = pd.Series({"Leite": 2, "Ovos": 12, "Carne": 1, "Arroz": 5, "Feijão": 2})
s.name = "Compras"
s
In [ ]:
""" Recebendo uma Lista"""
s = pd.Series([2, 12, 1, 5, 2])
s
In [ ]:
""" editando parâmetros"""
s.name="Compras"
s.index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"]
s
In [ ]:
""" Ordenação: Índices """
s.sort_index()
In [ ]:
""" Ordenação: Dados """
s.sort_values(ascending=False)
In [ ]:
""" Construtor padrão """
pd.DataFrame(
index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"],
columns=["quantidade", "unidade"],
data=[
[ 2, "L"],
[12, "Ud"],
[ 1, "Kg"],
[ 5, "Kg"],
[ 2, "Kg"]
]
)
In [ ]:
""" Construtor padrão: dados desconhecidos """
pd.DataFrame(
index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"],
columns=["quantidade", "unidade"]
)
In [ ]:
""" Construtor padrão: valor padrão """
pd.DataFrame(
index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"],
columns=["quantidade", "unidade"],
data="?"
)
In [ ]:
""" Recebendo um Dicionário"""
pd.DataFrame(
{
"quantidade": {
"Leite": 2,
"Ovos": 12,
"Carne": 1,
"Arroz": 5,
"Feijão": 2
},
"unidade": {
"Leite": "L",
"Ovos": "Ud",
"Carne": "Kg",
"Arroz": "Kg",
"Feijão": "Kg"
}
}
)
In [ ]:
""" Recebendo um Dicionário de Series"""
index = ["Leite", "Ovos", "Carne", "Arroz", "Feijão"]
pd.DataFrame(
{
"quantidade": pd.Series(index=index, data=[2, 12, 1, 5, 2]),
"unidade": pd.Series(index=index, data=["L", "Ud", "Kg", "Kg", "Kg"])
}
)
In [ ]:
""" Recebendo um vetor de Series"""
index = ["Leite", "Ovos", "Carne", "Arroz", "Feijão"]
df = pd.DataFrame(
[
pd.Series(name="quantidade", index=index, data=[2, 12, 1, 5, 2]),
pd.Series(name="unidade", index=index, data=["L", "Ud", "Kg", "Kg", "Kg"])
]
)
df
In [ ]:
""" Transpondo para ajustar a Tabela """
df = df.T
df
In [ ]:
""" editando parâmetros"""
df.index = ["Leite tipo A", "Ovos Orgânicos", "Patinho", "Arroz Arbóreo", "Feijão Preto"]
df.columns = ["Quantidade", "Unidade"]
df
In [ ]:
""" Ordenação: Índices """
df.sort_index()
In [ ]:
""" Ordenação: Dados """
df.sort_values(by="Unidade", ascending=False)
In [ ]:
index = pd.Index(data=["Leite", "Ovos", "Carne", "Arroz", "Feijão"], name="Itens")
index
In [ ]:
sq = pd.Series(index=index, data=[2, 12, 1, 5, 2]).sort_values()
sq
In [ ]:
su = pd.Series(index=index, data=["L", "Ud", "Kg", "Kg", "Kg"]).sort_index()
su
In [ ]:
df = pd.DataFrame({"Quantidade": sq, "Unidade": su}).sort_values(by="Unidade")
df
In [ ]:
df["Preço p/ Ud"] = [5.00, 29.99, 6.50, 3.30, 0.50]
df["Preço Total"] = [25.00, 29.99, 13.00, 6.60, 6.00]
df
In [ ]:
sq
In [ ]:
sq[2]
In [ ]:
sq[5:2:-1]
In [ ]:
sq["Leite"]
In [ ]:
sq["Leite":"Arroz"]
In [ ]:
df
In [ ]:
df["Unidade"]
In [ ]:
df.Quantidade
In [ ]:
""" Uma Coluna do DataFrame é uma Series"""
df["Preço Total"][2]
In [ ]:
""" Acesso a mais de uma Coluna """
df[["Preço Total", "Quantidade"]]
In [ ]:
""" acesso às Linhas: método 'loc' """
df.loc["Leite"]
In [ ]:
""" acesso ao item: método 'loc' """
df.loc["Ovos", "Preço Total"]
In [ ]:
""" acesso ao item: método 'iloc' """
df.iloc[4, 3]
In [ ]:
""" acesso por slice: método 'loc' """
df.loc["Leite":, "Preço p/ Ud":]
In [ ]:
""" acesso por slice: método 'iloc' """
df.iloc[3:, 2:]
In [ ]:
""" Atribuir Valores em 'slices' levanta warnings """
df["Unidade"][[0, 2]] = "Pacote"
df
In [ ]:
""" Deve-se usar 'loc' ou 'iloc' """
df.loc["Carne", "Unidade"] = "Kilograma"
df.iloc[3, 1] = "Litro"
df
In [ ]:
""" mask => array de bool """
sq > 2
In [ ]:
""" mask => array de bool """
df > 2
In [ ]:
""" atribuição de valores em uma cópia """
s_tmp = sq.copy()
s_tmp
In [ ]:
s_tmp[s_tmp == 2]
In [ ]:
s_tmp[s_tmp == 2] = 3
s_tmp
In [ ]:
""" atribuição de valores em uma cópia """
df_tmp = df[["Preço p/ Ud", "Preço Total"]].copy()
df_tmp
In [ ]:
""" mask """
mask = (df_tmp > 5) & (df_tmp < 10)
mask
In [ ]:
df_tmp[mask]
In [ ]:
tmp2 = df_tmp.copy()
tmp2[mask] = "?"
tmp2
In [ ]:
s_tmp[s_tmp == 2] = 3
s_tmp
In [ ]:
df = pd.DataFrame(
index=pd.Index(data=["Leite", "Ovos", "Carne", "Arroz", "Feijão"], name="Itens"),
columns=["Unidade", "Quantidade", "Preço Unitário"],
data=np.array([
["Litro", "Dúzia", "Kilograma", "Kilograma", "Kilograma"],
[4, 3, 1, 5, 2],
[3.00, 6.50, 25.90, 5.00, 3.80]
]).T,
)
df
In [ ]:
""" verificando dtypes """
df.dtypes
In [ ]:
"""Conversão necessária pois o pandas interp´reta 'mixed types' como strings """
df[["Quantidade", "Preço Unitário"]] = df[["Quantidade", "Preço Unitário"]].astype(float)
df
In [ ]:
""" verificando dtypes """
df.dtypes
In [ ]:
df["Preço Unitário"] += 1.
df
In [ ]:
df["Preço Unitário"] *= 0.90
df
In [ ]:
df["Preço Total"] = df["Preço Unitário"] * df["Quantidade"]
df
In [ ]:
df["Preço Médio Por Kg"] = np.nan
df
In [ ]:
mask = df["Unidade"] == "Kilograma"
df[mask]
In [ ]:
df.loc[mask, "Preço Médio Por Kg"] = (df.loc[mask, "Preço Unitário"] / df.loc[mask, "Quantidade"]).sum()
df
In [ ]:
df.fillna(0)
In [ ]:
df.sum()
In [ ]:
df.mean()
In [ ]:
df.std()
In [ ]:
df.median()
In [ ]:
df.mode()
In [ ]:
cols=["c1", "c2", "c3", "c4", "c5"]
data = np.random.rand(100, 5)
data *= np.array([ 10, 20, 30, 40, 50])
data += np.array([100, 200, 300, 400, 500])
data = np.ceil(data)
df = pd.DataFrame(columns=cols, data=data)
df.head(10)
In [ ]:
""" descrevendo as distribuições dos dados """
df.describe()
In [ ]:
""" mesma coisa, manipulando os percentis """
df.describe(percentiles=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
In [ ]:
""" Verificando os valores únicos de C3 """
df.c3.unique()
In [ ]:
""" Verificando a frequencia dos valores únicos de C3 """
df.c3.value_counts()
In [ ]:
""" Não altere esse valor, pois ele permite que toda a geração aleatória seja igual para todos """
np.random.seed(123456789)
In [ ]:
""" Dataset Original, já criado para a solução """
media = 150
sigma = 10
serie = pd.Series(np.random.randn(1000)) * sigma + media
In [ ]:
accum = pd.DataFrame(
index=range(2600),
columns=["original"],
data=serie
)
accum.head().append(accum.tail())
Para cada item a seguir, crie um dataset de distribuição normal contendo N elementos, usando a média e o sigma também fornecidos pelo item.
Em seguida, concatene os novos elementos gerados à Series original usando o código abaixo:
series_original = series_original.append(nova_series).reset_index(drop=True)
Depois disso, insira a Series atualizada no acumulador em uma coluna com o nome de coluna fornecido em cada item.
In [ ]:
""" Escreva a a Solução Aqui """
In [ ]:
""" Escreva a a Solução Aqui """
In [ ]:
""" Escreva a a Solução Aqui """
In [ ]:
""" Escreva a a Solução Aqui """
Implementar o OneHotEncoding, método muito utilizado em Machine Learning para codificar dados categóricos na forma em que algoritmos de aprendizado de máquina compreendam.
Exemplo:
original = pd.Series([
"classe_1",
"classe_1",
"classe_2",
"classe_2",
"classe_1",
"classe_2",
])
# ---
encoded = pd.DataFrame(
columns=["classe_1", "classe_2"],
data=[
[1, 0],
[1, 0],
[0, 1],
[0, 1],
[1, 0],
[0, 1]
]
)
In [ ]:
classes = ["Leite", "Ovos", "Carne", "Arroz", "Feijão"]
labels = pd.Series(np.random.choice(classes, 100))
In [ ]:
""" Escreva a a Solução Aqui """